﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestionaleLib;
using GestionaleLib.Controller;
     
namespace Leaf.View.Clienti
{
    public partial class frmGestisciClienti : Form
    {
        private frmElencoClienti RifElencoClienti;

        private Persona Persona;
        private FormStatus.StatoForm StatoForm;
        private string OldCodiceTessera;
        private string MsgCodTessera = "Ora sarà possibile assegnare una tessera al cliente.";

        GestionaleLib.Cliente Clienti = new GestionaleLib.Cliente();
       

        public frmGestisciClienti(frmElencoClienti RifElencoClienti,
            Cliente ClienteModifica = null, FormStatus.StatoForm StatoForm = FormStatus.StatoForm.Nuovo)
        {
            InitializeComponent();
            this.RifElencoClienti = RifElencoClienti;
            if (ClienteModifica != null)
                this.Clienti = ClienteModifica;
            this.StatoForm = StatoForm;
            ImpostaStato();
        }


        private void ImpostaStato()
        {
            switch (StatoForm)
            {
                case FormStatus.StatoForm.Nuovo:
                    this.Text = "Nuovo Cliente";
                    break;
                case FormStatus.StatoForm.Modifica:
                    this.Text = "Modifica Cliente";
                    LeggiCampiModifica();
                    break;
            }
        }

        private void LeggiCampiModifica()
        {
            Guid TesseraGuid;
            if (Clienti.Tessera != null)
            {
                TesseraGuid = Clienti.Tessera.Id;
                txtCodTessera.Text = Clienti.Tessera.Codice;
            }
            
            txtRagSoc.Text = Clienti.RagioneSociale;
            txtCAP.Text = Clienti.Cap;
            txtCitta.Text = Clienti.Citta;
            txtCellulare.Text = Clienti.Cellulare;
            txtCodFisc.Text = Clienti.CodiceFiscale;
            txtCognome.Text = Clienti.Cognome;
            txtNome.Text = Clienti.Nome;
            txtPIva.Text = Clienti.PartitaIva;
            txtEmail.Text = Clienti.Email;
            txtFax.Text = Clienti.Fax;
            txtIndirizzo.Text = Clienti.Indirizzo;
            txtTelefono.Text = Clienti.Telefono;
            
        }


        private void Salva() 
        {

             bool CheckCodiceTessera;
            
            if (txtCognome.Text.Equals("") || txtNome.Text.Equals("") || txtRagSoc.Text.Equals(""))
            {
                MessageBox.Show("I campi non sono stati inseriti", "", MessageBoxButtons.OK
                    , MessageBoxIcon.Warning);
                return;
            }
            try
            {
           
                
                Clienti.RagioneSociale = txtRagSoc.Text;
                Clienti.Cap = txtCAP.Text;
                Clienti.Citta = txtCitta.Text;
                Clienti.Cellulare = txtCellulare.Text;
                Clienti.CodiceFiscale = txtCodFisc.Text;
                Clienti.Cognome = txtCognome.Text;
                Clienti.Nome = txtNome.Text;
                Clienti.PartitaIva = txtPIva.Text;
                Clienti.Email = txtEmail.Text;
                Clienti.Fax = txtFax.Text;
                Clienti.Indirizzo = txtIndirizzo.Text;

                
                Clienti.Telefono = txtTelefono.Text;

                if (StatoForm == FormStatus.StatoForm.Nuovo)
                {
                    //new ctrlClienti().Nuovo(Clienti);
                    if (txtCodTessera.Text != "")
                    {
                        Clienti.Tessera = new Tessera();
                        Clienti.Tessera.DataAggiornamento = DateTime.Now;
                        Clienti.Tessera.Codice = txtCodTessera.Text;
                        new ctrlClienti().NuovaTesseraCliente(Clienti.Tessera);
                    }
                    else
                    {
                        Clienti.Tessera = null;
                    }
                    new ctrlClienti().Nuovo(Clienti);
                }
                else if (StatoForm == FormStatus.StatoForm.Modifica)
                {

                    //new ctrlClienti().Modifica(Clienti);
                    if ((txtCodTessera.Text != "") && (txtCodTessera.Text != MsgCodTessera))
                    {
                        if (Clienti.Tessera == null)
                        {
                            Clienti.Tessera = new Tessera();
                        }


                        Clienti.Tessera.DataAggiornamento = DateTime.Now;
                        Clienti.Tessera.Codice = txtCodTessera.Text;

                        new ctrlClienti().InserisciTesseraCliente(Clienti.Tessera);
                    }
                    else
                    {
                        Clienti.Tessera = null;
                        new ctrlClienti().DeleteTesseraCliente(OldCodiceTessera);
                    }
                    new ctrlClienti().Modifica(Clienti);
                    
                       
                }
            }
            catch (FormatException)
            {
                MessageBox.Show("I valori inseriti non corrispondono a quelli richiesti");
            }
            catch (ExceptionErroreInserimento)
            {
                MessageBox.Show("Errore durante la procedura");
            }
        }

        private void cmdSalva_Click_1(object sender, EventArgs e)
        {
            Salva();
            this.Close();
        }

        private void cmdAnnulla_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnCodiceTessera_Click(object sender, EventArgs e)
        {
            if (txtCodTessera.Text != "")
            {
                DialogResult scelta =  MessageBox.Show("Vuoi cancellare la tessera del cliente?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (scelta == System.Windows.Forms.DialogResult.Yes)
                {
                    OldCodiceTessera = txtCodTessera.Text;
                    txtCodTessera.Text = "";
                }
            }
            else
            {
                MessageBox.Show(MsgCodTessera,"Information",MessageBoxButtons.OK,MessageBoxIcon.Information);
                txtCodTessera.Enabled = true;
                txtCodTessera.Text = "Inserisci il codice della tessera.";
            }

        }






    }
}
